package com.gadgets.cm01.user.repository;

import com.gadgets.cm01.user.dto.UserChangePwdDTO;
import com.gadgets.cm01.user.dto.UserInfoOperationDTO;
import com.gadgets.cm01.user.dto.UserInfoQueryDTO;
import com.gadgets.cm01.user.pojo.User;
import com.gadgets.framework.common.dto.Pagination;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author UncleXiu
 * @version V1.0.0
 * @data 2020-09-16
 * 
 */
@Repository
@Mapper
public interface IUserRepository {

    /**
     * 分页条件查询用户信息
     * @param queryDTO      查询条件
     * @param pagination    分页条件
     * @return              查询结果
     * @throws Exception    异常信息
     */
    public List<User> selectUserInfoByCondition(@Param(value = "queryDto") UserInfoQueryDTO queryDTO, @Param(value = "pagination") Pagination pagination);

    /**
     * 更新用户密码信息
     * @param changePwdDTO  更新信息
     * @return              更新条数
     * @throws Exception    异常信息
     */
    public int updateUserPwdInfo(@Param(value = "changePwd") UserChangePwdDTO changePwdDTO);

    /**
     * 更新用户状态信息
     * @param operationDTO  状态变更信息
     * @return              更新条数
     * @throws Exception    异常信息
     */
    public int updateUserStatusInfo(@Param(value = "operation")UserInfoOperationDTO operationDTO);

    /**
     * 批量新增用户信息
     * @param userList      用户信息
     * @throws Exception    异常信息
     */
    public void insertUserInfo(@Param(value = "list")User userList);


}
